package it.controllocredito.backend.xml;

import java.io.IOException;

import org.xmlpull.v1.XmlPullParserException;

import it.controllocredito.R;
import it.controllocredito.backend.xml.bean.ConfigurazioneBean;
import it.controllocredito.backend.xml.bean.FileBean;
import it.controllocredito.backend.xml.bean.UserBean;
import android.app.Activity;
import android.content.res.XmlResourceParser;

public class XMLConfigurationParser
{
	
	private XmlResourceParser	parser;
	private int					eventType;
	
	public void parseXML(Activity activity)
	{
		
		try
		{
			parser = activity.getResources().getXml(R.xml.conf1);
			
			// Otteniamo il tipo di evento letto dal parser
			eventType = parser.getEventType();
			// Continuiamo fino alla fine del documento
			
			ConfigurazioneBean conf = new ConfigurazioneBean(new FileBean(),
					new UserBean());
			
			while (eventType != XmlResourceParser.END_DOCUMENT)
			{
				if (eventType == XmlResourceParser.START_TAG)
				{
					// se il tag che viene aperto � quello di conf
					
					// TAG FILE
					if ("file".equals(parser.getName()))
					{
						// Si tratta del tag relativo ai dettagli del file
						// TAG ID
						conf.getFileInfo().setId(
								Integer.parseInt(this.getTagText("id")));
						// TAG NAME
						conf.getFileInfo().setName(this.getTagText("name"));
					}
					
					if ("user".equals(parser.getName()))
					{
						
						// TAG CHECK CHIAMATE
						conf.getUser()
								.setCheckChiamate(
										(this.getTagText("check_chiamate")
												.equals("si")) ? true : false);
						// TAG CHECK SMS
						conf.getUser()
								.setCheckSms(
										(this.getTagText("check_sms")
												.equals("si")) ? true : false);
						// TAG CHECK INTERNET
						conf.getUser()
								.setCheckInternet(
										(this.getTagText("check_internet")
												.equals("si")) ? true : false);
						
					}
				}
				eventType = parser.next();
			}
			
			System.out.println(conf);
			
		} catch (XmlPullParserException xex)
		{
			xex.printStackTrace();
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	private String getTagText(String tagName) throws IOException,
			XmlPullParserException
	{
		String tagText = "";
		eventType = parser.next(); // apertura tag
		if (tagName.equals(parser.getName()))
		{
			eventType = parser.next(); // testo tag
			if (eventType == XmlResourceParser.TEXT)
			{
				tagText = parser.getText(); // ottengo il testo dal tag
			}
		}
		eventType = parser.next(); // chiusura tag
		
		return tagText;
	}
	
}
